package net.droidlabs.mvvmdemo.view; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.text.Editable; import android.view.View; import android.widget.EditText; import android.widget.Toast; import net.droidlabs.mvvm.recyclerview.adapter.ClickHandler; import net.droidlabs.mvvm.recyclerview.adapter.LongClickHandler; import net.droidlabs.mvvm.recyclerview.adapter.binder.CompositeItemBinder; import net.droidlabs.mvvm.recyclerview.adapter.binder.ItemBinder; import net.droidlabs.mvvmdemo.BR; import net.droidlabs.mvvmdemo.R; import net.droidlabs.mvvmdemo.binder.SuperUserBinder; import net.droidlabs.mvvmdemo.binder.UserBinder; import net.droidlabs.mvvmdemo.databinding.UsersViewBinding; import net.droidlabs.mvvmdemo.model.User; import net.droidlabs.mvvmdemo.viewmodel.SuperUserViewModel; import net.droidlabs.mvvmdemo.viewmodel.UserViewModel; import net.droidlabs.mvvmdemo.viewmodel.UsersViewModel; public class UsersView extends AppCompatActivity { private UsersViewModel usersViewModel; private UsersViewBinding binding; @Nullable private static String getStringFromEditText(EditText editText) { Editable editable = editText.getText(); return editable == null ? null : editable.toString(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); usersViewModel = new UsersViewModel(); usersViewModel.users.add(new SuperUserViewModel(new User("Android", "Dev"))); binding = DataBindingUtil.setContentView(this, R.layout.users_view); binding.setUsersViewModel(usersViewModel); binding.setView(this); binding.activityUsersRecycler.setLayoutManager(new LinearLayoutManager(this)); } public View.OnClickListener onButtonClick() { return new View.OnClickListener() { @Override public void onClick(View v) { usersViewModel.addUser(getStringFromEditText(binding.usersViewFirstname), getStringFromEditText(binding.usersViewLastname)); } }; } public ClickHandler<UserViewModel> clickHandler() { return new ClickHandler<UserViewModel>() { @Override public void onClick(UserViewModel user) { Toast.makeText(UsersView.this, user.getFirstName() + " " + user.getLastName(), Toast.LENGTH_SHORT).show(); } }; } public LongClickHandler<UserViewModel> longClickHandler() { return new LongClickHandler<UserViewModel>() { @Override public void onLongClick(UserViewModel user) { Toast.makeText(UsersView.this, "LONG CLICK: " + user.getFirstName() + " " + user.getLastName(), Toast.LENGTH_SHORT).show(); } }; } public ItemBinder<UserViewModel> itemViewBinder() { return new CompositeItemBinder<UserViewModel>( new SuperUserBinder(BR.user, R.layout.item_super_user), new UserBinder(BR.user, R.layout.item_user) ); } }